/**
* 系统管理 chatGPT管理
*/
<template>
  <div>
    <!-- 面包屑导航 -->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>chatGPT管理</el-breadcrumb-item>
    </el-breadcrumb>
    <!-- 搜索筛选 -->

    <el-form :inline="true" :model="formInline" class="user-search">
      <el-form-item  label="请输入你的问题：">

        <!--        <el-input class="result-search" type="textarea"  v-model="formInline.nickName" placeholder="我能干什么？"></el-input>-->

      </el-form-item></el-form>
    <el-form :inline="true" :model="formInline" class="user-search">
<!--      <el-form-item label="请输入你的问题：">-->

<!--        <el-input class="result-search" type="textarea"  v-model="formInline.nickName" placeholder="我能干什么？"></el-input>-->

<!--      </el-form-item>-->
      <el-form-item label="">
        <el-input size="small" v-model="formInline.nickName" placeholder=""></el-input>
      </el-form-item>


      <el-form-item>
        <el-button    size="small" type="primary" icon="el-icon-search" @click="search" v-loading.fullscreen.lock="fullscreenLoading"
                      element-loading-text="chatGPT疯狂码字中。。。"
                      element-loading-spinner="el-icon-loading"
                      element-loading-background="rgba(0, 0, 0, 0.8)"
        >提交</el-button>
      </el-form-item>
      <el-form-item>
        <el-button size="small" type="primary" icon="el-icon-search" @click="deleteinfo">清空问题</el-button>
      </el-form-item>



    </el-form>
    <!--列表-->
<!--    <el-form :inline="true" :model="formInline" class="result-search">-->

<!--      <el-form-item label="">-->
    <el-form :inline="true" :model="formInline" class="user-search">
      <el-form-item label="apenai回复：">
      </el-form-item>

    </el-form>


        <el-input  v-loading="loading" class="result-search" type="textarea"  v-model="formInline.chatResult" placeholder=""></el-input>
<!--      </el-form-item>-->

<!--    </el-form>-->


    <!-- 分页组件 -->
    <!-- 编辑界面 -->
    <!-- 数据权限 -->
    <!-- 查看消费记录 -->
  </div>
</template>

<script>
  // 导入请求方法
  import {
    appuserList,
    appChatGPT,
    appuserSave,
    queryRecord,
    appuserPwd,
    appuserExpireToken,
    appuserFlashCache,
    appuserLock,
    appUserDeptTree,
    appUserDeptSave,
    appUserDeptdeptTree,
    appUserChangeDept
  } from '../../api/userMG'
  import Pagination from '../../components/Pagination'
  export default {
    data() {
      return {
        fullscreenLoading: false,
        list: [],
        input: "",
        messages: [],
        userinfo: [],
        timeout: "",

        nshow: true, //switch开启
        fshow: false, //switch关闭
        loading: false, //是显示加载
        title: '添加用户',
        editFormVisible: false, //控制编辑页面显示与隐藏
        dataAccessshow: false, //控制数据权限显示与隐藏
        queryunitAccessshow: false, //控制所属单位隐藏与显示
        // 编辑与添加
        editForm: {
          userId: '',
          id: '',
          nickName: '',
          nickName: '',
          money: '',
          roleId: '',
          phoneNum: '',
          email: '',
          userSex: '',
          token: localStorage.getItem('logintoken')
        },
        // 消费明细
        recordInfo: [],
        // 部门参数
        unitparm: {
          userIds: '',
          deptId: '',
          deptName: ''
        },
        // 选择数据
        selectdata: [],
        // rules表单验证
        rules: {
          nickName: [
            { required: true, message: '请输入用户名', trigger: 'blur' }
          ],
          nickName: [
            { required: true, message: '请输入姓名', trigger: 'blur' }
          ],
          // roleId: [{ required: true, message: '请选择角色', trigger: 'blur' }],
          // userSex: [{ required: true, message: '请选择性别', trigger: 'blur' }]
        },
        // 删除用户
        seletedata: {
          ids: '',
          token: localStorage.getItem('logintoken')
        },
        // 重置密码
        resetpsd: {
          userId: '',
          token: localStorage.getItem('logintoken')
        },
        // 用户下线
        offline: {
          token: localStorage.getItem('logintoken')
        },
        // 请求数据参数
        formInline: {
          page: 1,
          limit: 10,
          deptId: '',
          nickName: '',
          id: '',
          money: '',
          phoneNum: '',
          isLock: '',
          chatResult: ''
        },
        //用户数据
        userData: [],
        // 数据权限
        UserDept: [],
        defaultProps: {
          children: 'children',
          label: 'name'
        },
        // 选中
        checkmenu: [],
        //参数role
        saveroleId: '',
        // 分页参数
        pageparm: {
          currentPage: 1,
          pageSize: 10,
          total: 10
        }
      }
    },
    // 注册组件
    components: {
      Pagination
    },

    /**
     * 数据发生改变
     */
    watch: {},

    /**
     * 创建完毕
     */
    // created() {
    // },

    /**
     * 里面的方法只有被调用才会执行
     */
    methods: {
      // 获取数据方法
      getdataaaa(parameter) {
        this.fullscreenLoading = true

        /***
         * 调用接口，注释上面模拟数据 取消下面注释
         */
        // 获取用户列表
        console.log('getdataaaa')
        console.log(parameter)
        console.log(this.formInline)
        appChatGPT(this.formInline).then(res => {
          console.log(parameter)

          if (res.status == 500) {
            this.$message({
              type: 'error',
              message: res.message
            })
          } else {
            this.userData = res.data.data
            this.formInline = res.data[0]
            this.fullscreenLoading = false
            // 分页赋值
            this.pageparm.currentPage = this.formInline.page
            this.pageparm.pageSize = this.formInline.limit
            this.pageparm.total = res.data.count
          }
        })
      },
      // 分页插件事件
      callFather(parm) {
        this.formInline.page = parm.currentPage
        this.formInline.limit = parm.pageSize
      },
      //搜索事件
      search() {
        this.formInline.chatResult=null;
        this.getdataaaa(this.formInline)
      },
      //清空问题
      deleteinfo() {
        this.formInline.nickName=null;
      },
      // 修改type
      editType: function(index, row) {
        this.loading = true
        let parm = {
          lock: '',
          userId: '',
          token: localStorage.getItem('logintoken')
        }
        parm.userId = row.userId
        let lock = row.isLock
        if (lock == 'N') {
          parm.lock = 'Y'
        } else {
          parm.lock = 'N'
        }
        // 修改状态
        userLock(parm).then(res => {
          this.loading = false
          if (res.success == false) {
            this.$message({
              type: 'info',
              message: res.msg
            })
          } else {
            this.$message({
              type: 'success',
              message: '状态修改成功'
            })
          }
        })
      },
      //显示编辑界面
      handleEdit: function(index, row) {
        this.editFormVisible = true
        if (row != undefined && row != 'undefined') {
          this.title = '修改用户'
          this.editForm.userId = row.id
          this.editForm.id = row.id
          this.editForm.nickName = row.nickName
          this.editForm.nickName = row.nickName
          this.editForm.money = row.money
          this.editForm.roleId = row.roleId
          this.editForm.phoneNum = row.phoneNum
          this.editForm.email = row.email
          this.editForm.userSex = row.userSex
        } else {
          this.title = '添加用户'
          this.editForm.userId = ''
          this.editForm.nickName = ''
          this.editForm.nickName = ''
          this.editForm.monry = ''
          this.editForm.roleId = ''
          this.editForm.phoneNum = ''
          this.editForm.email = ''
          this.editForm.userSex = ''
        }
      },
      // 编辑、添加提交方法
      // submitForm(editData) {
      //   this.$refs[editData].validate(valid => {
      //     if (valid) {
      //       // 请求方法
      //       appuserSave(this.editForm)
      //         .then(res => {
      //           this.editFormVisible = false
      //           this.loading = false
      //           if (res.message==="success") {
      //             this.$message({
      //               type: 'success',
      //               message: '数据保存成功！'
      //             })
      //           } else {
      //             this.$message({
      //               type: 'error',
      //               message: res.data
      //             })
      //           }
      //         })
      //         .catch(err => {
      //           this.editFormVisible = false
      //           this.loading = false
      //           this.$message.error('保存失败，请稍后再试！')
      //         })
      //     } else {
      //       return false
      //     }
      //   })
      // },
      // 显示部门设置
      handleunit: function(index, row) {
        this.queryunitAccessshow = true
        let parms = 0
        UserDeptdeptTree(parms)
          .then(res => {
            if (res.data.success) {
              this.UserDept = this.changeArr(res.data.data)
            } else {
              this.$message({
                type: 'info',
                message: res.msg
              })
            }
          })
          .catch(err => {
            this.loading = false
            this.$message.error('配置权限失败,请稍后再试！')
          })
      },
      handleClick(data, checked, node) {
        if (checked) {
          this.$refs.tree.setCheckedNodes([])
          this.$refs.tree.setCheckedNodes([data])
          this.unitparm.deptId = data.id
          this.unitparm.deptName = data.name
          //交叉点击节点
        } else {
        }
      },
      // 保存部门
      // unitPermSave() {
      //   let len = this.selectdata
      //   let ids = []
      //   if (len != 0) {
      //     for (let i = 0; i < len.length; i++) {
      //       ids.push(len[i].userId)
      //     }
      //   }
      //   this.unitparm.userIds = ids.join(',')
      //   UserChangeDept(this.unitparm)
      //     .then(res => {
      //       this.queryunitAccessshow = false
      //       if (res.success) {
      //         this.$message({
      //           type: 'success',
      //           message: '部门设置成功！'
      //         })
      //       } else {
      //         this.$message({
      //           type: 'info',
      //           message: res.msg
      //         })
      //       }
      //     })
      //     .catch(err => {
      //       this.loading = false
      //       this.$message.error('部门设置失败,请稍后再试！')
      //     })
      // },
      // 选择复选框事件
      selectChange(val) {
        this.selectdata = val
      },
      // 关闭编辑、增加弹出框
      closeDialog(dialog) {
        if (dialog == 'edit') {
          this.editFormVisible = false
        } else if (dialog == 'perm') {
          this.dataAccessshow = false
        } else if (dialog == 'unit') {
          this.queryunitAccessshow = false
        }
      },
      // 查询数据
      queryRecordInfo(index, row) {
        //弹框
        this.queryunitAccessshow = true;
        this.editForm.id = row.id;
        this.editForm.userId = row.id;
        this.editForm.nickName = row.nickName;

        queryRecord(this.editForm)
          .then(res => {
            if (res.message==="success") {
              //todo 展示数据

              this.recordInfo = res.data;

            } else {
              this.$message({
                type: 'error',
                message: res.message
              })
            }
          })
          .catch(err => {
            console.log("111")
            console.log(err)
            this.queryunitAccessshow = false;
            this.loading = false
            this.$message.error('重置密码失败，请稍后再试！',err)
          })
      },


      // 重置密码
      // resetpwd(index, row) {
      //   this.resetpsd.userId = row.userId
      //   this.$confirm('确定要重置密码吗?', '信息', {
      //     confirmButtonText: '确定',
      //     cancelButtonText: '取消',
      //     type: 'warning'
      //   })
      //     .then(() => {
      //       userPwd(this.resetpsd)
      //         .then(res => {
      //           if (res.message==="success") {
      //             this.$message({
      //               type: 'success',
      //               message: '重置密码成功！'
      //             })
      //           } else {
      //             this.$message({
      //               type: 'error',
      //               message: res.data
      //             })
      //           }
      //         })
      //         .catch(err => {
      //           this.loading = false
      //           this.$message.error('重置密码失败，请稍后再试！')
      //         })
      //     })
      //     .catch(() => {
      //       this.$message({
      //         type: 'info',
      //         message: '取消重置密码！'
      //       })
      //     })
      // },
      // 数据权限
      dataAccess: function(index, row) {
        this.dataAccessshow = true
        this.saveroleId = row.userId
        UserDeptTree(row.userId)
          .then(res => {
            if (res.data.success) {
              this.checkmenu = this.changemenu(res.data.data)
              this.UserDept = this.changeArr(res.data.data)
            } else {
              this.$message({
                type: 'info',
                message: res.data.msg
              })
            }
          })
          .catch(err => {
            this.loading = false
            this.$message.error('获取权限失败，请稍后再试！')
          })
      },
      //数据格式化
      changeArr(data) {
        var pos = {}
        var tree = []
        var i = 0
        while (data.length != 0) {
          if (data[i].pId == 0) {
            tree.push({
              id: data[i].id,
              name: data[i].name,
              pId: data[i].pId,
              open: data[i].open,
              checked: data[i].checked,
              children: []
            })
            pos[data[i].id] = [tree.length - 1]
            data.splice(i, 1)
            i--
          } else {
            var posArr = pos[data[i].pId]
            if (posArr != undefined) {
              var obj = tree[posArr[0]]
              for (var j = 1; j < posArr.length; j++) {
                obj = obj.children[posArr[j]]
              }

              obj.children.push({
                id: data[i].id,
                name: data[i].name,
                pId: data[i].pId,
                open: data[i].open,
                checked: data[i].checked,
                children: []
              })
              pos[data[i].id] = posArr.concat([obj.children.length - 1])
              data.splice(i, 1)
              i--
            }
          }
          i++
          if (i > data.length - 1) {
            i = 0
          }
        }
        return tree
      },
      // 选中菜单
      changemenu(arr) {
        let change = []
        for (let i = 0; i < arr.length; i++) {
          if (arr[i].checked) {
            change.push(arr[i].id)
          }
        }
        return change
      },
      // 菜单权限-保存
      // menuPermSave() {
      //   let parm = {
      //     userId: this.saveroleId,
      //     deptIds: ''
      //   }
      //   let node = this.$refs.tree.getCheckedNodes()
      //   let moduleIds = []
      //   if (node.length != 0) {
      //     for (let i = 0; i < node.length; i++) {
      //       moduleIds.push(node[i].id)
      //     }
      //     parm.deptIds = JSON.stringify(moduleIds)
      //   }
      //   UserDeptSave(parm)
      //     .then(res => {
      //       if (res.success) {
      //         this.$message({
      //           type: 'success',
      //           message: '权限保存成功'
      //         })
      //         this.dataAccessshow = false
      //       } else {
      //         this.$message({
      //           type: 'info',
      //           message: res.msg
      //         })
      //       }
      //     })
      //     .catch(err => {
      //       this.loading = false
      //       this.$message.error('权限保存失败，请稍后再试！')
      //     })
      // },
      // 下线用户
      // offlineUser(index, row) {
      //   this.$confirm('确定要让' + row.nickName + '用户下线吗?', '信息', {
      //     confirmButtonText: '确定',
      //     cancelButtonText: '取消',
      //     type: 'warning'
      //   })
      //     .then(() => {
      //       userExpireToken(row.nickName)
      //         .then(res => {
      //           if (res.success) {
      //             this.$message({
      //               type: 'success',
      //               message: '用户' + row.nickName + '强制下线成功！'
      //             })
      //           } else {
      //             this.$message({
      //               type: 'info',
      //               message: res.msg
      //             })
      //           }
      //         })
      //         .catch(err => {
      //           this.loading = false
      //           this.$message.error('用户下线失败，请稍后再试！')
      //         })
      //     })
      //     .catch(() => {
      //       this.$message({
      //         type: 'info',
      //         message: '已取消'
      //       })
      //     })
      // },
      // 刷新缓存
      // refreshCache(index, row) {
      //   userFlashCache(row.nickName)
      //     .then(res => {
      //       if (res.success) {
      //         this.$message({
      //           type: 'success',
      //           message: '刷新成功！'
      //         })
      //       } else {
      //         this.$message({
      //           type: 'info',
      //           message: res.msg
      //         })
      //       }
      //     })
      //     .catch(err => {
      //       this.loading = false
      //       this.$message.error('刷新失败，请稍后再试！')
      //     })
      // }
    }
  }
</script>

<style scoped>
  /*.user-search {*/
  /*  margin-top: 20px;*/
  /*}*/

  .result-search {
    /*margin-top: 20px;*/
    /*width: 400px;*/
    height: 100px;
  }
  .userRole {
    width: 100%;
  }
</style>

